package com.aos.erp.schools.service.sys;

import com.aos.erp.common.dao.mapper.Condition;
import com.aos.erp.common.exception.BizException;
import com.aos.erp.schools.enums.student.IsDel;
import com.aos.erp.schools.model.sys.Department;
import com.aos.erp.schools.model.sys.User;
import com.aos.erp.schools.model.sys.vo.MenuTree;
import com.aos.erp.schools.model.sys.vo.MenuVo;

import java.util.List;
import java.util.Map;

public interface DepartmentService {
    /**
     * 新增部门---分所
     * @param divisionCode
     * @param name
     * @param appCode 应用code
     * @throws BizException
     */
    void addBeanDivision(String divisionCode, String name, String appCode) throws BizException;

    /**
     * 新增部门---总校
     * @param divisionCode
     * @param schoolCode
     * @param name
     * @param appCode 应用code
     * @throws BizException
     */
    Long addBeanSchool(String divisionCode, String schoolCode, String name, String appCode) throws BizException;

    /**
     * 新增部门---分校/报名点
     * @param parentSchoolCode  父级驾校组织code
     * @param schoolCode        驾校组织code
     * @param name              驾校/报名点名称
     * @param depType           部门类型[F:分校;B:报名点]
     * @param appCode 应用code
     * @throws BizException
     */
    Long addBeanSchoolBranch(String parentSchoolCode,String schoolCode, String name,String depType, String appCode) throws BizException;

    /**
     * 新增部门---部门
     * @param depCode   父级组织code
     * @param name      名称
     */
    String addBeanDepartment(String depCode,String name, String appCode)throws BizException;

    /**
     * 根据部门ID批量删除部门
     * @param depId
     * @param appCode 应用code
     * @return
     */
    int isDel(String depId, String appCode) throws BizException;

    /**
     * 根据部门code批量删除部门
     * @param depCode
     * @return
     * @throws BizException
     */
    int isDelByDepCode(String depCode) throws BizException;
    /**
     * 根据部门ID修改部门
     * @param depId     部门ID
     * @param name      部门名称
     * @return
     * @throws Exception
     */
    int updateObject(String depId,String name) throws BizException;

    /**
     *  根据部门code查询
     * @param depCode
     * @return
     * @throws BizException
     */
    Department findByDepCode(String depCode)throws BizException;

    /**
     * "获取分所组织code
     * @param code  分所代码
     * @return
     */
    String getDepCodeDivision(String code) throws BizException;

    /**
     * 获取总校组织code
     * @param divisionCode  分所组织code
     * @return
     */
    String getDepCodeSchool(String divisionCode) throws BizException;

    /**
     * 获取分校/报名点组织code
     * @param schoolCode    总校组织code、分校组织code
     * @param depType       部门类型[F:分校;B:报名点]
     * @return
     * @throws Exception
     */
    String  getDepCodeBranch(String schoolCode, String depType) throws BizException;

    /**
     * 获取组织树
     * @param params
     * @return
     * @throws BizException
     */
    List<MenuTree> selectTree(Map<String,Object> params) throws BizException;
}
